import { getPaper } from "@/lib/papers/queries"; import { bibtex, citationApa, citationChicago, ris } from "@/lib/papers/citation"; import { citable } from "@/lib/papers/meta"; import { limited, tooMany } from "@/lib/api"; export async function GET(req: Request, { params }: { params: Promise<{ id: string; format: string }> }) { if (limited(req, "api")) return tooMany(); const { id, format } = await params; const p = await getPaper(id); if (!p) return Response.json({ error: "Not found" }, { status: 404 }); const c = citable(p); const h = { "Cache-Control": "public, max-age=300" }; if (format === "bib") return new Response(bibtex(c), { headers: { ...h, "Content-Type": "application/x-bibtex; charset=utf-8", "Content-Disposition": `attachment; filename="${p.slug}.bib"` } }); if (format === "ris") return new Response(ris(c), { headers: { ...h, "Content-Type": "application/x-research-info-systems; charset=utf-8", "Content-Disposition": `attachment; filename="${p.slug}.ris"` } }); if (format === "json") return Response.json({ apa: citationApa(c), chicago: citationChicago(c), bibtex: bibtex(c), ris: ris(c) }, { headers: h }); return Response.json({ error: "Unknown format" }, { status: 400 }); }